A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention is related generally to a software-based system and methodology for providing diagnoses and solutions to problems encountered by a given system. More particularly, the present invention is directed to a software-based system and methodology incorporating a problem-resolution production system, solution interpreters for implementing chosen solutions, and information providers, in which the solution interpreters and information providers interface with the problem-resolution production system via standardized interface mechanisms.
A xe2x80x9cproblem-resolution production systemxe2x80x9d (or simply referred to hereinafter as xe2x80x9cproduction systemxe2x80x9d) is a software system and methodology widely understood in the artificial intelligence field of computer science. At the most basic level of abstraction, a production system refers to a problem-resolution software engine and a set of rules which are written to reach some conclusion upon being operated on by the problem-resolution software engine, which is well known in the art. Each rule may be quite simple on its own, but when multiple rules are aggregated, these rules can form a quite complex system. A very simple example of a set of rules which may be contained in a production system is illustrated below in Table 1:
Many simple rules such as the ones mentioned above can be added to the production system. Once the rules have been written, then the production system is initialized with a set of facts such as the ones exemplified below in Table 2:
From this initial set of facts, and the rules previously mentioned above, the production system can infer several things: a) Jill is Sam""s Sister; b) Sally is Jeff""s Sister; and c) Jill is the aunt of both Sally and Jeff. More rules could be added to generate additional inferences, e.g., rules regarding grandfathers, cousins, etc.
In practical applications, production systems can be used to diagnose and solve sets of problems encountered by a computer system, for example. Given rules about a specific topic such as how to diagnose and solve problems related to printing a document from a computer system, for example, facts about the current state of the computer system can be entered into the production system. The production system then applies the relevant rules to determine if there is any problem, and if so, determine the best method for solving the problem.
While the above-described production system seems simple enough, several fundamental issues arise in streamlining and maximizing the versatility of the production system. The first issue is how to channel information about the state of the monitored computer system to the production system as a set of facts packaged in a standardized format. In addressing this issue, it is helpful to explore the concept of the Common Information Model (xe2x80x9cCIMxe2x80x9d), which was developed by a computer-industry consortium called the Desktop Management Task Force (xe2x80x9cDMTFxe2x80x9d) in an effort to facilitate uniform representation of computer-system objects in various operating systems. Simply put, CIM is a model that defines the components of a computing environment in terms of objects. Using CIM, the computer-system objects can be queried using SQL- like database queries. SQL, or xe2x80x9cSimple Query Language,xe2x80x9d is a common language used to make database queries, and an example of an SQL query would be xe2x80x9cSelect Name From Users Where ID greater than 30,xe2x80x9d which query would find the names of all users in a database who have user IDs greater than 30. An example of a CIM query is xe2x80x9cSelect *from CIM_LogicalDiskDrive,xe2x80x9d which query would return references to objects representing each memory disk drive in a particular computer system. These objects contain properties that define various aspects of the disk. In this example, the CIM_LogicalDiskDrive has properties such as DeviceID, FreeSpace and Size. Many other objects may be represented in CIM, such as the processor, system BIOS (xe2x80x9cBasic Input/Output Systemxe2x80x9d), operating system type, running processes, etc. One major drawback of CIM, however, is that CIM is a data model with no semantic notion and does not provide for manipulation of the objects in context. Even in an implementation of CIM which allows attachment of xe2x80x9cmethodsxe2x80x9d (which contain executable functions) to CIM objects, a given xe2x80x9cmethodxe2x80x9d will execute a called function without discrimination or context because the xe2x80x9cmethodxe2x80x9d is based on traditional Object Oriented (xe2x80x9cOOxe2x80x9d) technology.
Once the appropriate rules have been applied and a solution for the problem has been found, the next issue is implementation of the solution. Ideally, it would be desirable to achieve an implementation whereby once the optimal solution has been determined, the chosen solution is immediately and automatically implemented. However, there are many different types of solutions which may be proposed, and there is a need for an interface mechanism to handle various types of solutions that may be proposed by a given production system.
Existing methods of dealing with this issue involve writing program codes which are directly tied to the details of a given production system. An obvious disadvantage of this approach is that the person implementing the program codes must understand the details of the relevant internal operations of the production system in order to generate an appropriate action as directed by the production rules. Furthermore, because an interface mechanism is xe2x80x9ccustomizedxe2x80x9d for a particular production system, different production systems require different interface mechanisms.
The present invention provides a software-based system and methodology incorporating a problem-resolution production system, a mechanism for channeling information to the production system in a standardized format, xe2x80x9cinformation providersxe2x80x9d that retrieve information from specific information sources, and xe2x80x9csolution interpretersxe2x80x9d for implementing chosen solutions. In accordance with the present invention, the above-mentioned software system may be organized into a xe2x80x9csolution cubexe2x80x9d which interacts with a problem-resolution framework to identify and solve problems encountered by a given system, e.g., a host computer system. The solution cube, which is a uniquely identifiable problem-resolution object, may be constructed via a method, referred to as a xe2x80x9ccube builder.xe2x80x9d Each xe2x80x9csolution cubesxe2x80x9d consists of one or more xe2x80x9cknowledge elements.xe2x80x9d The knowledge element may in turn consist of: state strategies (e.g., what to monitor, etc.); logic governing the problem resolution strategies in the form of rules; and actionable components (scripts, executable, command lines, etc.). Each of the individual xe2x80x9cknowledge elementsxe2x80x9d that make up a given solution cube is reusable by other solution cubes, and individual components may be added incrementally to achieve a desired aggregation for a particular solution cube. Furthermore, each solution cube is uniquely identified through a GUID (xe2x80x9cGlobally Unique IDxe2x80x9d).
The above-mentioned knowledge elements operate to add semantic information to the CIM data model which defines the components of a computing environment in terms of objects. The knowledge elements define the semantics in the production system rules and rule consequents (i.e., actions to be performed), and by using the production system rules to set restrictions and dependencies on the properties of CIM objects, the xe2x80x9cpreferred statexe2x80x9d of a given computer system may be specified. The software-based methodology according to the present invention monitors the CIM objects and performs necessary actions based on the rules contained in the knowledge elements to maintain the preferred state, which rules may request information for the purpose of clarifying the context of the initial CIM data model by using heuristics and reasoning.
In order to facilitate a streamlined channeling of information to and from the production system, the present invention implements the concept of xe2x80x9cinformation providers,xe2x80x9d each of which is a provider module that retrieves information from a specific information source. All information providers share a common interface with the production system, thereby allowing implementation of a generalized query mechanism in the production system regardless of the actual physical implementation of the information source. From the production system, an xe2x80x9cinformation requestxe2x80x9d is issued when application of rules requires particular information. Associated with a given information source is a particular type of information request, and when a particular information request is asserted, the appropriate information provider is loaded and the specified information is retrieved. The retrieved information is then asserted into the production system as a set of facts. xe2x80x9cInformation providersxe2x80x9d may be incorporated within a given solution cube or provided as a module separate from the solution cube.
In yet another aspect of the present invention, the concept of a xe2x80x9csolution interpreterxe2x80x9d (or xe2x80x9csolution providerxe2x80x9d) is implemented. A solution interpreter is a software platform that can interpret a requested solution, perform it, and notify the production system when the solution has completed, as well as notify the production system of any results. The production system loads an appropriate solution interpreter and uses a common interface to request that a particular solution be executed. The common interface allows developers to implement a generalized solution mechanism in the production system regardless of the actual physical implementation of the solution interpreter. xe2x80x9cSolution Interpretersxe2x80x9d may be incorporated within a given solution cube or provided as a module separate from the solution cube.
The xe2x80x9ccube builderxe2x80x9d methodology enables a user to package production-rules files and other files inputted by a user into xe2x80x9cknowledge elements,xe2x80x9d which are in turn combined to form a solution cube for maintaining a predefined preferred state of a system, e.g., a computer system. The cube builder methodology may include the following steps: 1) the user selects a problem domain for which a solution cube will be constructed; 2) the user defines key concepts related to the selected problem domain; 3) the user defines a set of production rules for a knowledge element; 4) different types of information providers by which the production rules for the knowledge element may query information from various information sources are defined and stored; 5) the user defines one or more solutions for the knowledge element; 6) the user defines xe2x80x9csolution interpretersxe2x80x9d (or xe2x80x9csolution providerxe2x80x9d) for interpreting and executing the solutions defined in step 5); 6) Steps 1)-5) may be repeated to create additional knowledge elements; 7) the user selects one or more defined knowledge elements and groups the selected knowledge elements to define a solution cube; 8) a unique GUID identifier is assigned to the solution cube.
The software system in accordance with the present invention may reside on any computer-readable medium, e.g., a floppy disk, a computer system""s hard disk, a zip-drive disk, a CD ROM, or DVD ROM.